public class Linklisted{
    //定义一个头节点(1)
    private Node head=new Node();

    public void append(Object data){
        //定义一个可以移动的指针可以跳来跳去,并指向头节点
        Node current=head;

        //循环遍历到本链表的最后一个节点
        while(current.next!=null){
            current=current.next;
        }

        //用来存储新元素的节点
        Node node=new Node();
        node.data=data;
        node.next=null;

        //可以移动的指针再次指向下一个指针的节点
        current.next=node;
    }

    public Object get(int index){
        //1.创建计步器变量，用来记录current变量在链表中跳转的次数，用来控制循环的条件
        int step=0;

        //2.创建current变量，初值指向head头节点
        Node current=head;

        //3.创建循环
        while(step-1<index){
            current=current.next;
            step++;
        }
        //4.返回currrent变量指向的目标下标节点中的数据域取值
        return current.data;
    }

    public void remove(int index){
        int step=0;

        Node current=head;

        while(step<index){
            current=current.next;
        }

        current.next=current.next.next;
    }

    public void insert(Object data,int index){
        int step=0;

        Node current=head;

        while(step<index){
            current=current.next;
        }

        Node node=new Node();
        node.data=data;

        node.next=current.next;
        current.next=node;
    }

    public void iterate(){
        Node current=head;

        while(current.next!=null){
            current=current.next;
            System.out.println(current.data);
        }
    }
    public class Node{
        Object data;
        Node next;
    }
}
